package com.hk.core.redis.locks;

import java.util.concurrent.TimeUnit;

/**
 * @author Kevin
 */
public interface RedisLockRenewalStrategy {

    /**
     * 续期key
     *
     * @param key          redis LockKey
     * @param task         续期的任务
     * @param initialDelay 初始延迟时间
     * @param period       任务调度周期
     * @param unit         时间单位
     */
    void renewal(String key, Runnable task, long initialDelay, long period, TimeUnit unit);

    /**
     * 取消任务
     *
     * @param key redis LockKey
     */
    void cancel(String key);

    void shutdown();

}
